package service

import (
	"vpn-server/model"

	"github.com/go-xorm/xorm"
)

/**
 * 管理员服务
 * 标准的开发模式将每个实体的提供的功能以接口标准的形式定义,供控制层进行调用。
 *
 */
type AuthService interface {
	//通过管理员用户名+密码 获取管理员实体 如果查询到，返回管理员实体，并返回true
	//否则 返回 nil ，false
	GetByAdminNameAndPassword(username string) (model.Admin, bool)
}

func NewAuthService(db *xorm.Engine) AuthService {
	return &authSevice{
		Engine: db,
	}
}

/**
 * 管理员的服务实现结构体
 */
type authSevice struct {
	Engine *xorm.Engine
}

/**
 * 通过用户名和密码查询管理员
 */
func (ac *authSevice) GetByAdminNameAndPassword(username string) (model.Admin, bool) {
	var admin model.Admin
	ac.Engine.Where(" admin_name = ? ", username).Get(&admin)
	return admin, admin.AdminId != 0
}
